﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;
using Conteinerid;

namespace TestContainerid
{
    public class MyBaseClass<T>
    {

        public virtual T Tipo
        {
            get;
            set;
        }

        public virtual void FazAlgumaCoisaVoid()
        {

        }

        [TransactionalMethod()]
        protected virtual Z FazAlgumaCoisa<Z>(Z arg)
        {
            Console.Write("teste");
            return default(Z);
        }
    }

    public class MyClass : MyBaseClass<int>
    {
        protected override Z FazAlgumaCoisa<Z>(Z arg)
        {
            try
            {
                Console.Write("entrada");
                return base.FazAlgumaCoisa<Z>(arg);
            }

            finally
            {
                Console.Write("entrada");
            }
            
        }
    }   
}
